package com.xuecheng.media.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuecheng.media.model.po.MediaProcess;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author 勾新杰
 * @since 2025-01-16
 */
public interface IMediaProcessService extends IService<MediaProcess> {

    // 这里的任务就是处理视频，转码降低存储空间以及提高传输效率等等，都转成mp4，一个视频文件对应一个任务

    /**
     * 根据分片获取待处理任务
     * @param shardIndex 分片索引
     * @param shardTotal 分片总数
     * @param count 要取的总任务数
     * @return 任务列表
     */
    List<MediaProcess> getMediaProcessList(Integer shardIndex, Integer shardTotal, Integer count);

    /**
     * 启动任务
     * @param id 任务id
     * @return true表示启动成功，false表示启动失败
     */
    boolean startProcess(Long id);

    /**
     * 标记任务为成功
     *
     * @param id  任务id
     * @param url
     */
    void successProcess(Long id, String url);

    /**
     * 标记任务为失败
     * @param id 任务id
     * @param errorMsg 失败原因
     */
    void failProcess(Long id, String errorMsg);

    /**
     * 自增任务失败次数
     * @param id 任务id
     * @return 返回自增后的失败次数
     */
    Integer fail(Long id);

    /**
     * 找出超时任务
     * @return 超时任务
     */
    List<MediaProcess> listExceedTimeProcess();
}
